// 函数作为返回值
function makeFn() {
  let msg = 'hello';
  return function () {
    console.log(msg)
  }
}

// 先赋值再调用
const fn1 = makeFn();
fn1();// 能调用到msg

// 直接调用
makeFn()();

///////////////////////////////////////
function once(fn) {
  let done = false;
  return function () {
    if (!done) {
      done = true;
      return fn.apply(this, arguments);
    }
  }
}

let pay = once(function (money) {
  console.log(money)
})

//只执行一次
pay(5)
pay(5)
pay(5)
pay(5)
pay(5)